﻿using System;
using System.Collections.Generic;

using Moe.ECamel.Common.Entities;

namespace Moe.ECamel.Common.Contracts
{
	/// <summary>
	/// Contract for customers services.
	/// </summary>
	public interface ICustomerService : IECamelService
	{
		/// <summary>
		/// Gets a list of all the customers in the specified library.
		/// </summary>
		/// <param name="libraryId">Library Id to look for.</param>
		/// <returns>List of customers in specified library.</returns>
		List<Customer> GetCustomersByLibrary(int libraryId);
		/// <summary>
		/// Creates a new customer.
		/// </summary>
		/// <param name="customer">Customer details.</param>
		/// <returns>If successful - null, otherwise validation error.</returns>
		ECamelError CreateCustomer(Customer customer);
		/// <summary>
		/// Updates a customer.
		/// </summary>
		/// <param name="customer">Customer details.</param>
		/// <returns>If successful - null, otherwise validation error.</returns>
		ECamelError UpdateCustomer(Customer customer);
		/// <summary>
		/// Get Customer details by customer Id.
		/// </summary>
		/// <param name="customerId">Customer Id</param>
		/// <returns>Customer details.</returns>
		Customer GetCustomerById(int customerId);
	}
}